home *** CD-ROM | disk | FTP | other *** search
/ The Glitch Apple Disk Collection / 2014.glitch.apple.collection.zip / indexed / 33MASTER.DSK / LITTLE BRICK OUT.bas < prev    next >
BASIC Source File  |  2014-09-09  |  10KB  |  208 lines

  1. 10  GOTO 2000
  2. 20 Q =  PDL(0): IF  ABS(Q -OQ) <5 * SGN(Q)  THEN  RETURN 
  3. 21 Z =  PEEK( -16384): IF Z = 155  THEN 11010
  4. 30 OQ = Q:Q =  INT(39 -Q/6): IF Q <0  THEN Q = 0
  5. 40  IF Q >34  THEN Q = 34
  6. 50  COLOR= D: VLIN Q,Q +LL AT 0: COLOR= A: IF P <Q  THEN  VLIN 0,Q -1 AT 0
  7. 60  IF Q <P  THEN  VLIN Q +LL +1,39 AT 0
  8. 70 P = Q: RETURN 
  9. 75  PLOT X,Y/3: COLOR= F: PLOT I,K:X = I:Y = J
  10. 80 J = Y +W: IF J <0  OR J >119  THEN  GOSUB 230
  11. 120 I = X +V: IF I <0  THEN 1900
  12. 130  IF I <6  THEN OQ = 500
  13. 150  GOSUB 20: COLOR= E:K = J/3: IF I >39  THEN 240
  14. 160  IF  SCRN( I,K) = E  THEN 75
  15. 170  IF I  THEN 270
  16. 180 V = 2:W = (K -P) *2 -LL:M = 1
  17. 215  POKE 6,150 - ABS(W) *4: POKE 7,3
  18. 218 Z =  PEEK( -16336) - PEEK( -16336) + PEEK( -16336) - PEEK( -16336): CALL 768
  19. 220  GOTO 75
  20. 230 W =  -W:J = Y:Z =  PEEK( -16336) - PEEK( -16336) + PEEK( -16336) - PEEK( -16336) + PEEK( -16336) - PEEK( -16336) + PEEK( -16336): RETURN : REM  SIDE BOUNCE
  21. 240  FOR I = 1 TO 6:M =  PEEK( -16336): NEXT I:I = X:M = 0
  22. 250 V =  -V
  23. 260  GOTO 75
  24. 270  IF M  THEN V =  ABS(V)
  25. 275 M = 1
  26. 280  VLIN  INT(K/2) *2, INT(K/2) *2 +1 AT I:S = S +I/2 -9: VTAB 24: HTAB 8: PRINT S;: VTAB 23: HTAB 1
  27. 295  POKE 6,180 -I *3: POKE 7,3:Z =  PEEK( -16336): CALL 768
  28. 300  POKE 6,140 +I * RND(1): POKE 7,2: CALL 768
  29. 310  POKE 6,50: POKE 7,3: CALL 768
  30. 330  REM ^BRICK STRUCK
  31. 340  IF S <720  THEN 250
  32. 350  VTAB 24: PRINT : PRINT : PRINT : GOSUB 1500: GOTO 760
  33. 355  COLOR= E: REM DRAW FIELD
  34. 360  FOR I = 0 TO 39: VLIN 0,39 AT I: NEXT I
  35. 420  FOR I = 20 TO 34  STEP 2
  36. 430  COLOR= B: VLIN 0,39 AT I: COLOR= C: FOR W =  INT((I/4 - INT(I/4)) *4 +.05) * SGN(I/4) TO 39  STEP 4
  37. 440  VLIN W,W +1 AT I: NEXT W
  38. 450  NEXT I: RETURN 
  39. 760  VTAB 23: PRINT "CONGRATULATIONS, ";: IF  LEN(A$)  THEN  PRINT A$;", ";
  40. 770  PRINT "YOU WIN!";: CALL  -868: PRINT 
  41. 780 A$ = "CHAMP"
  42. 790  GOTO 1100
  43. 800  VTAB 24: PRINT : PRINT : PRINT : VTAB 22: PRINT "YOUR SCORE IS ";: IF S <10  THEN 910
  44. 810  IF S >50  THEN EXTP = 1
  45. 820  IF S >100  THEN NVC = 0
  46. 830  IF S <20  THEN 960
  47. 840  IF S <60  THEN 1010
  48. 850  IF S <120  THEN 1040
  49. 860  IF S <200  THEN 1050
  50. 870  IF S <300  THEN 1060
  51. 880  IF S <420  THEN 1070
  52. 890  IF S <650  THEN 1080
  53. 900  GOTO 1090
  54. 910  IF NVC  THEN 930
  55. 920  PRINT "NOT TOO GOOD, BUT": PRINT "KEEP ON TRYING!":NVC = 1: GOTO 1100
  56. 930  IF NVC1  THEN 950
  57. 940  PRINT "STILL NOT GREAT,": PRINT "BUT KEEP WORKING AT IT.":NVC1 = 1: GOTO 1100
  58. 950  PRINT "ALL RIGHT.": PRINT "JUST KEEP TRYING.": GOTO 1100
  59. 960  IF NVC  THEN 990
  60. 970  IF   NOT EXTP  THEN 910
  61. 980  PRINT "PRETTY BAD!": GOTO 1100
  62. 990  PRINT "MUCH BETTER THAN IT WAS.": PRINT "KEEP GOING!": GOTO 1100
  63. 1000  PRINT "O.K.": PRINT "TRY IT AGAIN!": GOTO 1100
  64. 1010  IF NVC  THEN 1030
  65. 1020  PRINT "FAIR. ": GOTO 1100
  66. 1030  PRINT "GETTING REALLY GOOD.": GOTO 1100
  67. 1040  PRINT "NOT BAD. ": GOTO 1100
  68. 1050  PRINT "GOOD.": GOTO 1100
  69. 1060  PRINT "VERY GOOD.": GOTO 1100
  70. 1070  PRINT "VERY, VERY GOOD.": GOTO 1100
  71. 1080  PRINT "EXCELLENT.": GOTO 1100
  72. 1090  PRINT "NEARLY PERFECT.": GOTO 1100
  73. 1100  POKE 50,63: VTAB 24: PRINT "PUSH BUTTON FOR NEW GAME, ESC KEY TO EN";: POKE 2039,4: POKE 50,255: POKE  -16368,0
  74. 1110  REM  "POKE 2039,4" POKES AN INVERSE "D" INTO THE LAST SCREEN POSITION, AVOIDING SCROLLING.
  75. 1120 S = S +BANUS:BANUS = 0
  76. 1130  IF S < PEEK(789) + PEEK(790) *256  THEN 1160: REM  NEW SCORE LESS THAN HIGH SCORE
  77. 1140  POKE 790,S/256: POKE 789,S - PEEK(790) *256: REM  POKE NEW HIGH SCORE INTO PLACE
  78. 1150  VTAB 21: HTAB 15: PRINT "FORMER"
  79. 1160 Z =  PEEK( -16384): IF  PEEK( -16287) >127  THEN 1190
  80. 1170  GOSUB 20: IF Z < >155  THEN 1160
  81. 1175  REM  
  82. 1180  IF Z = 155  THEN 11000
  83. 1190 OQ = 500: GOTO 2520
  84. 1300  REM  PRINT POINT SCALE
  85. 1310 SCOLE = 6 -LL
  86. 1320  CALL  -936: PRINT "POINTS PER BRICK -> 1 2 3 4 5 6 7 8"
  87. 1360  VTAB 24: CALL  -958: PRINT "SCORE= 0";
  88. 1370  IF  PEEK(787) = 37  THEN  IF  PEEK(788) = 38  THEN 1390: REM  IF "VARIABLE" ALREADY INITIALIZED, SKIP
  89. 1380  POKE 787,37: POKE 788,38: POKE 789,0: POKE 790,0: REM  SET FLAGS AND INIT NON-CLEARING VARIABLE
  90. 1390  HTAB 22: PRINT "HIGH SCORE= "; PEEK(789) + PEEK(790) *256;: HTAB 1: RETURN 
  91. 1500  REM  BONUS
  92. 1510  VTAB 22: POKE 50,63: IF L = 1  THEN  PRINT "                BONUS POINTS:          "
  93. 1520  IF L >1  THEN  PRINT "BONUS POINTS FOR ";L;" BALLS LEFT:          "
  94. 1530  VTAB 22: FOR Q = 1 TO 1800: NEXT Q
  95. 1540  FOR Q = 0 TO L *50  STEP 5
  96. 1550  HTAB 32: PRINT Q;
  97. 1560  POKE 6,180: POKE 7,10: CALL 768
  98. 1570  POKE 6,200 * RND(1) +50: POKE 7,10: CALL 768
  99. 1580  POKE 6,160 -Q/10: POKE 7,12: CALL 768
  100. 1590  NEXT Q: POKE 50,255
  101. 1600 BANUS = Q -5: VTAB 21: HTAB 1: PRINT "TOTAL=";
  102. 1610  FOR Q = 1 TO 500: NEXT Q
  103. 1620  FOR Q = S TO S +BANUS  STEP 5
  104. 1630  HTAB 8: PRINT Q;
  105. 1640  POKE 6,150 -Q/40: POKE 7,3: CALL 768
  106. 1650  POKE 6,140: POKE 7,2: CALL 768
  107. 1660  POKE 6,50: POKE 7,3: CALL 768
  108. 1680  FOR K = 1 TO 10 * RND(1) +20: NEXT K
  109. 1690  NEXT Q: PRINT : RETURN 
  110. 1900  FOR H = 1 TO 80:OD =  PEEK( -16336): NEXT H: GOTO 2910
  111. 2000  REM  *** START OF PROGRAM ***
  112. 2010  GOSUB 7000: REM  POKE SOUND ROUTINE
  113. 2020  TEXT : CALL  -936: POKE  -16298,0
  114. 2090  IF  PEEK( -16287) >127  THEN  IF  PEEK( -16286) >127  THEN  GOSUB 8500
  115. 2100  REM  ^IF BOTH PADDLE SWITCHES READ "ON", THEN PADDLES ARE NOT PLUGGED IN.
  116. 2110  VTAB 24
  117. 2140 Q = I = LL = J = P = OQ = X = Y = K = W = E = V = D = F = N = M = Z = S: REM SET UP VARIABLE TABLE FOR MAXIMUM SPEED
  118. 2145  GOSUB 2340
  119. 2150  PRINT "***************************************";: VTAB 1: HTAB 1: PRINT "***************************************"
  120. 2160  COLOR= 10: VLIN 1,46 AT 0: VLIN 0,47 AT 39: REM  "DRAW" ASTERICKS (*) ALONG EDGES
  121. 2170  VTAB 3: PRINT "* BRICK OUT IS A DYNAMIC BOARD GAME": PRINT "* IN WHICH YOU ATTEMPT TO KNOCK DOWN"
  122. 2180  PRINT "* A WALL OF BRICKS WITH A BALL": PRINT "* STRUCK BY YOUR PADDLE.": PRINT : PRINT 
  123. 2190  PRINT "* YOU CONTROL THE PADDLE ON THE BOARD": PRINT "* BY TURNING THE APPLE PADDLE (0).": PRINT : PRINT 
  124. 2200  PRINT "* YOU MAY "; CHR$(34);"PUT ENGLISH"; CHR$(34);" ON THE BALL": PRINT "* (DEFLECT THE BALL) BY HITTING IT": PRINT "* WITH THE PADDLE HELD OFF-CENTER."
  125. 2210  PRINT : PRINT 
  126. 2220  POKE  -16368,0
  127. 2240  PRINT "* BEFORE WE BEGIN, PLEASE TYPE": PRINT "* YOUR FIRST NAME AND THEN PRESS": PRINT "* THE KEY MARKED "; CHR$(34);"RETURN"; CHR$(34);
  128. 2250  POKE  PEEK(40) + PEEK(41) *256 + PEEK(36),96: REM  CURSOR
  129. 2260 P =  PEEK( -16384): IF P = 155  THEN 11000
  130. 2270  IF  PEEK( -16287) >127  THEN 2335
  131. 2280  IF P <156  AND P < >141  THEN 2260
  132. 2290  INPUT "";A$
  133. 2300  IF  LEN(A$) = 0  THEN 2335
  134. 2310  FOR I = 1 TO  LEN(A$): IF  ASC( MID$ (A$,I,I)) < >64  THEN 2330
  135. 2320  NEXT I:I = I -1
  136. 2330 A$ =  MID$ (A$,I, LEN(A$)): IF  LEN(A$)  THEN  IF  LEN(A$) >12  THEN A$ =  LEFT$(A$,12)
  137. 2335  GOTO 2490
  138. 2340  CALL  -936: VTAB 5: PRINT "========================================";: INVERSE : PRINT "   L I T T L E   B R I C K   O U T      ";: NORMAL : PRINT "========================================"
  139. 2350  VTAB 12: PRINT "   COPYRIGHT 1979 APPLE COMPUTER INC"
  140. 2410  VTAB 20
  141. 2420  PRINT : PRINT "(PRESSING THE ESC KEY WILL END THE GAME)"
  142. 2450  VTAB 23: PRINT "PRESS THE SPACE BAR TO BEGIN....";: POKE  PEEK(40) + PEEK(41) *256 + PEEK(36),96: POKE  -16368,0
  143. 2460 P =  PEEK( -16384): IF  PEEK( -16287) >127  THEN 2480
  144. 2470  IF P < >160  AND P < >155  THEN 2460
  145. 2480  POKE  -16368,0: IF P = 155  THEN 11000
  146. 2485  HOME : VTAB 24: HTAB 1: RETURN 
  147. 2490  CALL  -936
  148. 2500  GR :A = 2:B = 12:C = 9:D = 13:E = 2:F = 15: REM COLORS
  149. 2510 LL = 5:P = 15
  150. 2520  GOSUB 355
  151. 2580 OOLDP1 =  PDL(1)
  152. 2860  GOSUB 1300
  153. 2870 S = 0:Y = 19:L = 6
  154. 2880  VTAB 23: POKE 50,63: PRINT "  PUSH PADDLE BUTTON TO BEGIN THE GAME  ";: POKE 50,255
  155. 2890  FOR K = 1 TO 20: NEXT K: REM  ALLOW TIME FOR USER TO RELEASE BUTTON FROM LAST PUSH
  156. 2900  GOSUB 20
  157. 2904 P1 =  PDL(1): IF ( ABS(OOLDP1 -P1) >3  OR  PEEK( -16286) >127)  AND   NOT ERASE  THEN  GOSUB 4810
  158. 2905 OOLDP1 = P1: REM WRONG PADDLE
  159. 2906  IF ERASE  THEN ERASE = ERASE -1
  160. 2907  IF ERASE = 1  THEN  GOSUB 4800
  161. 2909  IF  PEEK( -16287) <128  AND  PEEK( -16384) < >155  THEN 2900
  162. 2910  VTAB 23: CALL  -868
  163. 2920  COLOR= A: PLOT X,Y/3:Y = 120 * RND(1)
  164. 2930 X = 19
  165. 2940 V =  -1:W = 5 * RND(1) -2:L = L -1: IF L <1  THEN 800
  166. 2947  IF  LEN(A$)  THEN  IF L >1  THEN  PRINT A$", ";
  167. 2950  IF L >1  THEN  PRINT "THIS IS BALL ";6 -L;" OUT OF 5."
  168. 2970  IF  PEEK( -16384) = 155  THEN 11000
  169. 2980  IF L < >1  THEN 3010
  170. 2990  POKE 50,63: PRINT "THIS IS THE LAST BALL";
  171. 3000  POKE 50,255: VTAB 23: PRINT 
  172. 3010  FOR I = 1 TO 25 +125 * RND(1): GOSUB 20: NEXT I:M = 1:N = 0
  173. 3020  GOTO 80
  174. 4800  VTAB 23: HTAB 1: CALL  -868: POKE 50,63: PRINT "  PUSH PADDLE BUTTON TO BEGIN THE GAME  ";: POKE 50,255:OQ = 500: RETURN 
  175. 4810  VTAB 23: HTAB 1: CALL  -868: PRINT " <<< PLEASE USE THE OTHER PADDLE. >>>  ";
  176. 4820  POKE 6,40: POKE 7,30: CALL 768
  177. 4830 ERASE = 20: RETURN 
  178. 7000  REM  SOUND ROUTINE
  179. 7010  POKE 768,173: POKE 769,48: POKE 770,192: POKE 771,136: POKE 772,208: POKE 773,4: POKE 774,198: POKE 775,7: POKE 776,240: POKE 777,8:
  180. 7020  POKE 778,202: POKE 779,208: POKE 780,246: POKE 781,166: POKE 782,6: POKE 783,76: POKE 784,0: POKE 785,3: POKE 786,96
  181. 7030  RETURN 
  182. 8500  REM  PADDLES NOT PLUGGED IN
  183. 8510  VTAB 10: PRINT "BRICK OUT REQUIRES THE USE OF THE APPLE"
  184. 8520  PRINT "PADDLE SET.  PLEASE PLUG IN THE PADDLE"
  185. 8530  PRINT "SET AND THEN PRESS THE SPACE BAR."
  186. 8540  PRINT : PRINT "IF YOU DO NOT HAVE PADDLES, YOU MAY"
  187. 8550  PRINT "EXIT THE GAME BY PRESSING THE ESC KEY."
  188. 8560 P =  PEEK( -16384): IF P <155  THEN 8560
  189. 8570  POKE  -16368,0: IF P < >155  THEN 8580: GOTO 11000
  190. 8580  IF  PEEK( -16287) >127  AND  PEEK( -16286) >127  THEN 8560
  191. 8590  IF P < >160  THEN 8560
  192. 8600  CALL  -936: TEXT : RETURN : REM  PADDLES ARE IN AND SPACE BAR HAS BEEN PRESSED.
  193. 11000  REM  "ESC" KEY HAS BEEN PRESSED
  194. 11010  POKE  -16368,0: CALL  -936: IF  PEEK(34) = 0  THEN  VTAB 10
  195. 11015  PRINT "WOULD YOU LIKE TO CONTINUE"
  196. 11020  PRINT "PLAYING? ";:VTB =  PEEK(37):TB =  PEEK(36)
  197. 11030  PRINT : PRINT : PRINT "(TYPE YES OR NO AND PRESS RETURN)";
  198. 11040  VTAB VTB +2: CALL  -868: VTAB VTB +1: POKE 36,TB: CALL  -868: INPUT "";H$
  199. 11050  IF  LEFT$(H$,1) < >"Y"  THEN 11060
  200. 11055 H$ = "":P = 15:OQ = 500: GOTO 2490
  201. 11060  IF  LEFT$(H$,1) < >"N"  THEN 11040
  202. 11070  VTAB (VTB): CALL  -868: VTAB (VTB +1): PRINT "WOULD SOMEONE ELSE LIKE TO PLAY? ";:VTB =  PEEK(37):TB =  PEEK(36)
  203. 11080  VTAB 23: CALL  -868: VTAB VTB +1: POKE 36,TB: CALL  -868: INPUT "";H$
  204. 11090  IF  LEFT$(H$,1) = "Y"  THEN 2020
  205. 11100  IF  LEFT$(H$,1) < >"N"  THEN 11080
  206. 11110  GOTO 31111
  207. 31111  POKE  -16368,0: TEXT : CALL  -936: TEXT : END 
  208. 55000  IF  INT(39 - PDL(0)/6) >34  THEN P = 34